//
//  CZMainTabbar.swift
//  GZWeibo007
//
//  Created by 黄伟 on 15/12/19.
//  Copyright © 2015年 itcast. All rights reserved.
//

import UIKit

//因为要添加没有文字的中间按钮，系统的tabbar满足不了我们的要求，因此要自定义tabbar
class CZMainTabbar: UITabBar {

    // 1.添加的按钮数
    private let Count = 5
    
    // 2.重写layoutSubviews方法，父控件的frame的改变的时候，就会调用这个方法
    override func layoutSubviews() {
        // 1.一定要调用父类方法
        super.layoutSubviews()
        
        // 2.计算UITabBarButton宽度
        let width = self.bounds.width / CGFloat(Count)
        
        // 3.最左边的frame
        let frame = CGRect(x: 0, y: 0, width: width, height: self.bounds.height)
        
        // 4.遍历所有的子控件,设置除加号的4个按钮
        var index = 0
        
        for view in self.subviews{
            if view is UIControl && !(view is UIButton) {
                // 在这个方法里面只想给 UITabBarButton 设置frame,需要过滤掉 composeButton 按钮
                // 重新设置frame
                // CGRectOffset:  CGRect偏移
                view.frame = CGRectOffset(frame, CGFloat(index) * width, 0)
                
                index += index == 1 ? 2 : 1
            }
        }
        
        //5.设置加号按钮的frame
        composeButton.frame = CGRectOffset(frame, 2.0 * width, 0)
    }
    
    // MARK: -懒加载
    ///加号按钮
    lazy var composeButton: UIButton = {
        //1.创建button
        let button = UIButton()
        
        //2.设置背景图片
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: UIControlState.Normal)
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: UIControlState.Highlighted)
        
        //3.设置按钮图片
        button.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: UIControlState.Normal)
        button.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: UIControlState.Highlighted)
        
        //4.添加到父控件上
        // 在代码块不能省略self
        self.addSubview(button)
        
        return button
    }()
}
